package Game;

import java.awt.Rectangle;

import javax.swing.ImageIcon;


/**
 * Crea el objeto brazo, el cual se utiliza para recolectar objetos.
 * @author Enrique, Klein,Kloster
 *
 */
public class Brazo {
	
	
	protected 	ImageIcon[] brazo;

	protected Robot myRobot;
	protected int h;
	protected boolean activado;
	protected RepresentacionGrafica rg;

	/**
	 * Constructor de la clase
	 * @param rob
	 */
	public Brazo(Robot rob){
		myRobot=rob;
		activado=false;
		this.h=2;
		cargarImagenes();
		rg = new RepresentacionGrafica(brazo,myRobot.getPosX(),myRobot.getPosY());
		rg.setAbajo();
		
	}
	
	/**
	 * Controla si el brazo esta activado o no.
	 */
	
	public void actiDesac(){
		if (activado)
			activado=false;
		else activado=true;
	}
	
	
	/**
	 * Controla si el brazo esta activado. True en caso afirmativo, false en caso contrario
	 */
	public boolean activado(){
		return activado;
	}
	
	
	
	public boolean collision(Transitable p) {

		return p.getBounds().intersects(getBounds()); 
	}
	
	public boolean collision(Destruible p) {

		return p.getBounds().intersects(getBounds()); 
	}
	
	
	
	public Rectangle getBounds(){
		if (!activado)
			return null;
		else return getBounds2();
	}
	
	/**
	 * Genera el Rectangle con el que se intersecta el brazo y los Coleccionables
	 * horizonte= 0 hacia arriba.
	 * horizonte= 1 derecha
	 * horizonte = 2 hacia abajo
	 * horizonte = 3 hacia izquiera
	 * @return Rectangle generado.
	 */
	
	public Rectangle getBounds2() {
		int x=myRobot.getPosX();
		int y = myRobot.getPosY();
		switch (h)
		{
		case 0: {
			y=y+65;	

			break;
		}
		case 1: {
			x=x-15;
			break;
		}
		case 2: {
			y=y-15;
			break;
		}
		case 3: {
			x=x+65;
			break;			
		}
		}
		
		return new Rectangle(x,y, 25, 25);
	}
	
	public void moverBrazo (){
		int x=myRobot.getPosX();
		int y = myRobot.getPosY();
		
		switch (h)
		{
		case 0: {
			y=y+35;	
			x=x+10;
			rg.setAbajo();
			break;
		}
		case 1: {
			x=x-20;
			rg.setDer();
			break;
		}
		case 2: {
			y=y-35;
			x=x+10;
			rg.setArriba();
			break;
		}
		case 3: {
			x=x+50;
			
			rg.setIzq();
			break;			
		}
		}
		rg.setLocation(x,y);
		if (activado){
			rg.setVisible(true);
		} else rg.setVisible(false);
		
	}
	
	public void setHorizonte (int horizonte){
		h = horizonte;
		moverBrazo();
	}
	
	public void setRG(RepresentacionGrafica r){
		rg=r;
	}
	
	public RepresentacionGrafica getRG(){
		return rg;
	}
	
	public void cargarImagenes(){
		brazo = new ImageIcon[4];
		brazo[0]= new ImageIcon(getClass().getClassLoader().getResource("Imagenes/Robot/brazoarriba.png"));
		brazo[1]= new ImageIcon(getClass().getClassLoader().getResource("Imagenes/Robot/brazoderecha.png"));
		brazo[2]= new ImageIcon(getClass().getClassLoader().getResource("Imagenes/Robot/brazoabajo.png"));
		brazo[3]= new ImageIcon(getClass().getClassLoader().getResource("Imagenes/Robot/brazoizquierda.png"));

	}
	

	
}
